function InferenceDS = fixinfds(InferenceDS)

% FIXINFDS  Fix a user generated ("hand rolled") inference data structure to make sure it meets
%           the consistency requirements of all ReBEL inference algorithms. This function will not
%           clobber any predefined fields, it will however check for consistency and add other
%           required fields to InferenceDS that the user has not defined, or for which the default
%           settings are required.
%
%   InferenceDS = fixinfds(InferenceDS)
%
%   INPUT
%          InferenceDS        ReBEL inference data structure that has been "hand-rolled", i.e
%                             directly defined by the user and not generated by using GENINFDS.
%                             This data structure might not be completely consistent.
%
%   OUTPUT
%          InferenceDS
%
%   SEE ALSO
%     GENINFDS, examples/gssm/INFDS_TRAIN_NN, examples/parameter_estimation/DEMPE2
%
%   Copyright (c) Oregon Health & Science University (2006)
%
%   This file is part of the ReBEL Toolkit. The ReBEL Toolkit is available free for
%   academic use only (see included license file) and can be obtained from
%   http://choosh.csee.ogi.edu/rebel/.  Businesses wishing to obtain a copy of the
%   software should contact rebel@csee.ogi.edu for commercial licensing information.
%
%   See LICENSE (which should be part of the main toolkit distribution) for more
%   detail.

%===================================================================================================

%--- Add some needed fields with default values that the user either forgot to add, or intentionally
%--- left blank in order to set default values:

if ~isfield(InferenceDS,'type')
  InferenceDS.type = 'InferenceDS';
end

if ~isfield(InferenceDS,'stateAngleCompIdxVec')
  InferenceDS.stateAngleCompIdxVec = [];
end

if ~isfield(InferenceDS,'obsAngleCompIdxVec')
  InferenceDS.obsAngleCompIdxVec = [];
end

consistent(InferenceDS,'InferenceDS');

